package com.crp.redis.service;

import java.util.Map;
import java.util.Set;

public interface IRedisService {

	/**
	 * 将实体对象转化成json串，然后添加到hash表中
	 * 
	 * @param tablePrefix
	 * @param tableType
	 * @param field
	 * @param value
	 */
	void setObjectForHash(String tablePrefix, String tableType, String field, Object value);

	/**
	 * 从hash表中得到json串，然后转化成原来的实体对象
	 * 
	 * @param tablePrefix
	 * @param tableType
	 * @param field
	 * @param clazz
	 * @return
	 */
	<T> T getObjectFromHash(String tablePrefix, String tableType, String field, Class<T> clazz);

	/**
	 * 获取节点缓存数据
	 * @param tablePrefix
	 * @param tableType
	 * @return
	 */
	Map<String, Object> queryEntriesByKey(String tablePrefix, String tableType);

	/**
	 * 移除缓存
	 * 
	 * @param tablePrefix
	 * @param tableType
	 * @param hashKeys
	 */
	void removeObjectsByKeys(String tablePrefix, String tableType, Object... hashKeys);
	
	/**
	 * 将实体对象转化成json串，然后添加到hash表中，并设置超时时间
	 * @param tablePrefix
	 * @param tableType
	 * @param field
	 * @param value
	 * @param timeout
	 */
	void setExpireObjectForHash(String tablePrefix, String tableType, String field, Object value,Long timeout);

	/**
	 * 查询所有的fileds
	 * @param tablePrefix
	 * @param tableType
     * @return
     */
	Set<String> queryFields(String tablePrefix, String tableType);
}
